# -*- coding: utf-8 -*-
"""
使用已有的数据(主要是招标公共内容的详情数据)
一、确认使用哪个embedding模型作为我们数据(招标公告数据)的embedding模型
    (1) 进行内容数据的切分，
    (2) 选择不同的embedding模型，进行索引建立，并入库
    (3) 使用相同的问题进行召回测试，看看具体recall得分

二、确认哪样的切块(chunk)可以更好地作为reference
    (1)chunk不能过短，过短容易出现没法回答一整个问题(或者较大的问题)，或者导致回答问题，不够全面
    (2)chunk不能过长，过长容易出现，关键信息的淹没，同时可能会丢失关键的语义信息
        a.因为本身embedding模型将文本向量化的过程中，或多或少会出现语义丢失的问题
        b.过长的chunk在embedding的后，可能会抓不住主要信息(关键的概要信息)
    所以相对较好的chunk既要有：
        a.足够清晰，简单的上下文语义
        b.同时关键要点信息可以尽量保留
        c.如果chunk有唯一标识信息可以加入到chunk中，这样增加相近trunk的区分度

三、碰到如果单个embedding模型召回效果不好，可以使用多个embedding模型，或者追加retriever的渠道
   采用多路召回后，提高召回率/命中率
   多路召回后的重排方案：
     rrf(reciprocal rank fusion)算法：倒数排名融合
     reranker重排：使用reranker相关的模型

"""